﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Acms.AcmsControls;
using System.Web.UI;
using Acms.Bll;

public abstract class BaseTemplatePage : TemplatePage
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        AttachEvents();
    }

    protected abstract void AttachEvents();

    protected List<Post> GetArticles(List<Post> data)
    {
        List<Post> tmp = new List<Post>();
        foreach(Post p in data)
        {
            if(p.TemplateName == "Article")
            {
                tmp.Add(p);
            }
        }
        return tmp;
    }
}

/*public class BaseDummyTemplatePage : Acms.AcmsControls.DummyTemplatePage
{
    public BaseDummyTemplatePage()
    {
    }

    public List<Post> GetPosts(int count)
    {
        List<Post> tmp = new List<Post>();
        while (tmp.Count < count)
        {
            tmp.Add(Post.CreateInstance());
        }
        return tmp;
    }

    public List<Topic> GetTopics(int count)
    {
        List<Topic> tmp = new List<Topic>();
        while (tmp.Count < count)
        {
            tmp.Add(Topic.CreateInstance());
        }
        return tmp;
    }

    private string[] summaryText = new string[]
    {
        "In rutrum augue vel erat. Nulla sollicitudin nisi quis felis. Nulla eu neque cursus justo fermentum bibendum. Integer lorem. Mauris pharetra blandit est. Duis bibendum, sapien eu rhoncus auctor, metus odio scelerisque dui, sit amet pellentesque erat justo vel massa.",
        "Pellentesque bibendum, nisi non condimentum rutrum, leo est fermentum justo, at ultrices nisi enim non metus. Nulla sapien ipsum, congue sed, commodo quis, adipiscing eget, diam. Nullam consectetuer nibh et dui laoreet bibendum.",
        "Nunc rhoncus, dui non fringilla tincidunt, dolor nunc sodales libero, ac commodo pede nibh in quam. Vestibulum sit amet risus et risus cursus congue. Suspendisse potenti. Suspendisse sagittis urna eget justo. Integer nisi lorem, egestas in, posuere eu, tristique nec, lectus.",
        "Nullam tortor ante, faucibus et, commodo et, semper sit amet, turpis. Nam volutpat. Pellentesque porttitor tortor at nisi. Vivamus et magna ac est sagittis lacinia. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.",
        "Nunc rhoncus, dui non fringilla tincidunt, dolor nunc sodales libero, ac commodo pede nibh in quam. Vestibulum sit amet risus et risus cursus congue. Suspendisse potenti. Nulla vitae risus. Nam nec odio. Phasellus mollis, erat quis egestas sagittis, pede tortor hendrerit massa, nec sagittis odio magna fringilla eros. Mauris et tortor. Cras consequat sagittis mi. Sed venenatis adipiscing leo. Etiam dignissim tortor in leo."
    };

    private int GetIndex(int itemIndex, int length)
    {
        return itemIndex % length;
    }

    public string GetSummaryText(int itemIndex)
    {
        return summaryText[GetIndex(itemIndex, summaryText.Length)];
    }

    private string[] thumbnailUrl = new string[]
    {
        "~/dataimages/thumb_1.jpg",
        "~/dataimages/thumb_2.jpg",
        "~/dataimages/thumb_3.jpg",
        "~/dataimages/thumb_4.jpg",
        "~/dataimages/thumb_5.jpg"
    };

    public string GetThumbnailUrl(int itemIndex)
    {
        return thumbnailUrl[GetIndex(itemIndex, thumbnailUrl.Length)];
    }

    private string[] imageUrl = new string[]
    {
        "~/dataimages/image_1.jpg",
        "~/dataimages/image_2.jpg",
        "~/dataimages/image_3.jpg",
    };

    public string GetImageUrl(int itemIndex)
    {
        return imageUrl[GetIndex(itemIndex, imageUrl.Length)];
    }

    private string[] kpUrl = new string[]
    {
        "~/dataimages/personThumb_50_0.jpg",
        "~/dataimages/personThumb_50_1.jpg",
        "~/dataimages/personThumb_50_2.jpg",
    };

    public string GetkpUrl(int itemIndex)
    {
        return kpUrl[GetIndex(itemIndex, kpUrl.Length)];
    }

    public string GetIntroText()
    {
        return @"<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed et felis. Cras id ligula. Maecenas magna neque, convallis in, adipiscing eu, eleifend sed, lacus. Aenean a nisl. Nunc pretium faucibus orci. Curabitur risus. Cras condimentum. Aliquam odio velit, ultricies nec, tincidunt in, consectetuer pharetra, nibh. Vestibulum ligula velit, vestibulum eu, placerat at, mattis in, nisl. Sed vitae dolor et ipsum placerat lacinia. Nam a erat. Aenean scelerisque. Mauris aliquet rutrum ipsum. Integer vehicula aliquet libero. Sed faucibus iaculis justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae</p><p>Quisque quis risus. Nulla lacinia urna et tortor. Integer rutrum eleifend dui. Cras purus urna, blandit sed, tempor in, ultricies nec, magna. Donec ut arcu. Quisque porttitor dui ut neque luctus porttitor. Phasellus ac sem eu mi consequat tempor. In quis justo quis quam sodales fringilla. Nam hendrerit elit a tellus. Ut adipiscing volutpat pede. Aenean felis nulla, accumsan egestas, fermentum vel, imperdiet id, elit. Vestibulum ut libero. Phasellus lacinia laoreet mi. Proin vel erat quis nisi faucibus lobortis. Ut malesuada commodo orci. Aliquam erat quam, hendrerit a, feugiat id, rutrum id, ante. Nullam pretium volutpat turpis.</p>";
    }

    private string[] kpNames = new string[]
        {
            "James Smith",
            "Katherine Bond",
            "Tracy Moon",
            "Lai Man Sung",
            "Elisabeth Robinson",
            "Susan Sluggett"

        };

    public string GetkpName(int itemIndex)
    {
        return kpNames[GetIndex(itemIndex, kpNames.Length)];
    }



    private string[] kpJob = new string[]
    {
        "Lawyer",
        "Partner",
        "Solicitor",
    };

    public string GetkpJob(int itemIndex)
    {
        return kpJob[GetIndex(itemIndex, kpJob.Length)];
    }


    private string[] DisplayNames = new string[]
        {
            "Suspendisse vitae quam",
            "Quisque feugiat nibh vel lectus",
            "Duis faucibus auctor sapien",
            "Aliquam a felis non nisl",
            "Welcome",
            "Curabitur tristique sapien et risus"
        };

    public string GetDisplayName(int itemIndex)
    {
        return DisplayNames[GetIndex(itemIndex, DisplayNames.Length)];
    }

    private int currentDisplayNameIndex = -1;
    protected int CurrentDisplayNameIndex
    {
        get
        {
            if (currentDisplayNameIndex == -1)
            {
                Random rnd = new Random();
                currentDisplayNameIndex = rnd.Next(0, DisplayNames.Length);
            }
            return currentDisplayNameIndex;
        }
    }

    public string GetDisplayName()
    {
        return DisplayNames[CurrentDisplayNameIndex];
    }

    private string[,] Quotes = new string[4, 2]{
         {"Ambrosius Macrobius", "<p>Good laws have their origins in bad morals.</p>"},
         {"John J. Plomp", "<p>You know that children are growing up when they start asking questions that have answers.</p>"},
         {"Robert Benchley", "<p>Drawing on my fine command of the English language, I said nothing.</p>"},
         {"Robert Benchley", "<p>A boy can learn a lot from a dog: obedience, loyalty, and the importance of turning around three times before lying down.</p>"}
        };


    private int currentQuoteIndex = -1;
    public int CurrentQuoteIndex
    {
        get
        {
            if (currentQuoteIndex == -1)
            {
                Random rnd = new Random();
                currentQuoteIndex = rnd.Next(0, Quotes.GetLength(0));
            }
            return currentQuoteIndex;
        }
    }

    protected string GetQuote()
    {
        return Quotes[CurrentQuoteIndex, 1];
    }

    public string GetQuoteMaker()
    {
        return Quotes[CurrentQuoteIndex, 0];
    }

    protected override object SaveViewState()
    {

        ViewState["CurrentQuoteIndex"] = currentQuoteIndex;
        ViewState["CurrentDisplayNameIndex"] = currentDisplayNameIndex;
        return base.SaveViewState();
    }

    protected override void LoadViewState(object savedState)
    {
        base.LoadViewState(savedState);
        if (ViewState["CurrentQuoteIndex"] is int)
        {
            currentQuoteIndex = (int)ViewState["CurrentQuoteIndex"];
        }
        if (ViewState["CurrentDisplayNameIndex"] is int)
        {
            currentDisplayNameIndex = (int)ViewState["CurrentDisplayNameIndex"];
        }
    }

    private string[] FullArticle = new string[]{
        @"<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In turpis. Phasellus vestibulum pretium lorem. Nullam eu metus. Vestibulum sit amet arcu. Aliquam gravida semper lacus. Maecenas in tellus. Mauris convallis mi ut arcu. Praesent at erat mollis orci mattis rhoncus. Duis ac neque. Cras vel libero quis diam tincidunt mollis. Mauris at ante eget justo scelerisque pulvinar. Nullam ullamcorper pede ac massa.</p>
        <p>Mauris odio ipsum, congue vitae, molestie non, varius id, erat. Quisque tempus. Vivamus dui enim, aliquet at, dapibus eget, tempus aliquet, velit. Vestibulum sagittis interdum augue. Aenean lorem massa, congue quis, dignissim eu, egestas vel, elit. In molestie, arcu id blandit tempus, ipsum orci vestibulum urna, vel fringilla quam lacus eu enim. Sed lobortis, dolor a ullamcorper ornare, ante lacus tincidunt odio, eu rhoncus eros urna et libero. Fusce aliquet tincidunt dolor. Maecenas ultricies enim nec tellus. In diam. Donec pulvinar, libero in convallis viverra, lacus mauris dictum magna, quis iaculis eros nisi lacinia nibh. Aliquam rhoncus vulputate arcu. Nunc ligula. Quisque sem sapien, consectetuer sollicitudin, porta in, iaculis sit amet, odio. Curabitur sit amet odio et enim dignissim pellentesque. Etiam justo. Proin in orci id tellus bibendum tincidunt. Integer egestas risus quis pede. Aenean fringilla ultrices urna. Phasellus porta quam nec neque.</p>
        <p>Suspendisse enim. Etiam vel felis. Ut adipiscing enim et neque. Quisque congue fringilla sem. Donec condimentum tellus non odio. Cras dictum risus. Nunc fermentum metus non lacus. Phasellus sapien. Quisque non mauris vitae tellus imperdiet accumsan. Vestibulum facilisis. Duis venenatis. Duis posuere feugiat ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse mauris risus, tempus dignissim, facilisis et, suscipit non, diam.</p>
        <p>Suspendisse volutpat, neque lobortis dictum blandit, nisi lectus congue odio, at egestas nulla augue sit amet enim. Suspendisse potenti. Nunc dignissim. Nam ultrices felis nec purus. Morbi velit elit, malesuada sed, auctor elementum, iaculis eget, elit. Morbi vehicula turpis at purus. Nunc at orci. Nunc dapibus aliquet tortor. Sed pharetra, nibh at gravida convallis, massa nulla sollicitudin nunc, ac tincidunt erat sapien in dolor. Suspendisse convallis. Nulla facilisi. Fusce bibendum, pede ac volutpat egestas, enim odio ultrices leo, non eleifend tortor enim venenatis nisl.</p>
        <p>Maecenas turpis. Quisque quis justo a velit egestas aliquet. Aliquam pellentesque. Donec porta eros quis ante. Vivamus quis turpis. Sed et lorem. Aenean ipsum. Donec at felis eget diam egestas congue. Pellentesque auctor est nec dui. Cras auctor, dolor vitae lobortis pharetra, sapien est pellentesque arcu, et auctor nunc nunc vel elit.</p>",
        @"<p>Maecenas tristique libero ut tortor. Pellentesque et diam. Quisque pretium molestie felis. Proin sodales. Vivamus dignissim lobortis lacus. Etiam sollicitudin, sapien a accumsan luctus, augue odio mollis nibh, ac cursus dui arcu non quam. Duis ut turpis in pede placerat scelerisque. Ut congue. Fusce in leo in magna facilisis interdum. Fusce tellus. Nam et mi. Phasellus tellus nulla, bibendum et, convallis quis, posuere sed, quam. Suspendisse eu ante. Mauris pulvinar urna sit amet orci viverra varius.</p>
        <p>Vestibulum pellentesque. Mauris ultrices luctus metus. Aliquam vitae velit. Praesent at purus at dolor pellentesque aliquet. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam laoreet justo ac ligula feugiat viverra. Mauris laoreet nisi sit amet nunc. Quisque turpis tortor, gravida condimentum, fermentum ultricies, congue nec, arcu. Etiam ante tortor, congue sit amet, malesuada quis, porta ac, elit. Nulla feugiat.</p>
        <p>Phasellus dignissim, nulla eu hendrerit laoreet, enim turpis imperdiet turpis, sit amet porttitor sem metus ut nisi. Mauris odio mauris, facilisis posuere, porttitor nec, lacinia nec, diam. Ut accumsan est id sapien. Aliquam erat dolor, rutrum nec, cursus id, tincidunt sit amet, nisi. Aliquam et metus a risus sagittis fringilla. Fusce eu tellus. Sed interdum, massa nec vulputate blandit, nisi eros porttitor tellus, quis facilisis enim eros sit amet ligula. Vestibulum vel lorem id sem ultrices semper. Sed est arcu, ultrices eu, commodo in, vestibulum in, augue. Phasellus porttitor nibh a lectus pharetra pharetra. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam tortor neque, interdum ut, porttitor sed, malesuada ac, est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed erat sapien, molestie a, dapibus ut, porttitor in, leo. Sed eget elit. Sed auctor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
        <p>Vestibulum rutrum mi non orci. Ut ultricies. Pellentesque lobortis lobortis nunc. Donec enim. Duis risus turpis, condimentum sit amet, venenatis vitae, convallis sed, justo. Sed ipsum. Quisque et urna eget enim ullamcorper vestibulum. Nam interdum faucibus dolor. Pellentesque a sem. Phasellus ut ipsum eu odio ultrices placerat. Praesent venenatis. Ut placerat venenatis nisl. Etiam scelerisque ultrices enim. Vestibulum et ligula congue justo eleifend accumsan.</p>",
        @"<p>Suspendisse potenti. Donec id augue. Praesent ipsum diam, luctus molestie, consectetuer id, euismod et, pede. Aliquam vitae leo ac eros cursus rhoncus. Sed et metus. Morbi sodales augue id nisi. Duis ultrices. Nulla sed orci. Nulla eget metus vel lectus vestibulum sodales. Praesent quis tortor id arcu luctus feugiat. Donec felis. Suspendisse dui dolor, ultricies in, blandit eu, pretium ac, nisi. Donec egestas semper metus. Sed lobortis ante nec lorem. Praesent fermentum tempus odio. Etiam vehicula. Sed luctus lacus.</p>
        <p>Morbi lacinia rhoncus ante. Sed velit velit, mattis at, fermentum sed, euismod at, elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam est, imperdiet et, condimentum aliquam, ornare in, lectus. Donec auctor elit non enim. Aliquam pharetra. Mauris purus mi, tempor eu, porta eget, consequat a, augue. Curabitur pulvinar pede non diam. Mauris aliquam risus. Nulla viverra hendrerit est. Aenean elementum orci eu magna. Quisque tempor lorem at libero. Etiam quis tellus. Nam lectus libero, fringilla eget, laoreet a, condimentum sit amet, neque. Proin condimentum elementum lorem. Sed elementum vulputate urna. Pellentesque interdum. Etiam ut sapien. Aliquam in pede vel pede malesuada lacinia. Nunc ultricies sem sed mauris.</p>
        <p>Morbi posuere risus eget tortor. Nam euismod, lacus quis fermentum volutpat, diam metus sagittis turpis, eget eleifend sapien nisl in mi. Cras semper elit ut libero. Aliquam mattis. Praesent sit amet ligula. Aenean eget nulla sit amet elit dapibus molestie. Mauris sagittis dolor quis eros. Suspendisse suscipit lorem ut metus. Integer tempus dignissim nunc. Nullam ligula massa, iaculis nec, aliquam non, pulvinar sed, tellus. Sed vel leo. Donec mi. Ut sit amet leo. Mauris neque. Morbi facilisis lacus at erat. Etiam purus justo, venenatis vel, suscipit nec, aliquam ac, enim. Etiam purus leo, tempor eget, tempus vel, sagittis vitae, tellus.</p>
        <p>Nulla odio erat, pulvinar eget, tristique nec, venenatis eu, augue. Nulla pulvinar interdum dui. Nulla elementum metus in arcu. Aliquam nulla. Aliquam suscipit elit non magna. Maecenas ut nibh. Ut nunc augue, viverra non, faucibus quis, sollicitudin at, elit. Pellentesque a turpis. Morbi eu dolor eu pede lobortis tincidunt. Maecenas in nunc et dui molestie faucibus. Pellentesque blandit, augue sed iaculis venenatis, metus nisi mattis dolor, at dictum nisl tortor ac augue. Ut at mi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris lectus elit, fermentum ac, volutpat non, tempus quis, quam. Maecenas lorem. Morbi ut odio a massa volutpat condimentum. Quisque diam. Nullam rhoncus semper ligula.</p>" 
    };

    protected string GetFullArticle(int itemIndex)
    {
        return FullArticle[GetIndex(itemIndex, FullArticle.Length)];
    }

    private string[] SectionStyleClasses = new string[]{
        "serviceEmployment",
        "serviceFinancial",
        "serviceMediation",
        "serviceLitigation",
        "serviceCommercial",
        "serviceProperty",
        "",
        ""
    };

    public string GetSectionStyleClass(int itemIndex)
    {
        return SectionStyleClasses[GetIndex(itemIndex, SectionStyleClasses.Length)];
    }

    public List<Topic> GetAllServices()
    {
        List<Topic> tmp = new List<Topic>();
        foreach (string name in this.SectionStyleClasses)
        {
            if (!string.IsNullOrEmpty(name))
            {
                Topic t = Topic.CreateInstance();
                t.Name = name.Replace("service", "");
                tmp.Add(t);
            }
        }
        return tmp;
    }

    private string[] sectors = new string[]
    {
        "Pharmacy",
        "Financial Services",
        "Construction"
    };

    public List<Topic> GetAllSectors()
    {
        List<Topic> tmp = new List<Topic>();
        foreach (string name in this.sectors)
        {
            if (!string.IsNullOrEmpty(name))
            {
                Topic t = Topic.CreateInstance();
                t.Name = name;
                tmp.Add(t);
            }
        }
        return tmp;
    }

    public List<Post> GetAllPeople()
    {
        List<Post> tmp = new List<Post>();
        foreach (string name in this.kpNames)
        {
            Post p = Post.CreateInstance();
            p.DisplayName = name;
            tmp.Add(p);
        }
        return tmp;
    }
}*/